package cz.semjobKB.conllx.api;

import cz.semjobKB.conllx.api.impl.Word;

import java.util.List;

/**
 * The Interface declares methods operating over sentence
 */
public interface ISentence extends ITextPart, ITextPartIterator {

	/**
	 * Gets the words text part
	 * 
	 * @param <W>
	 *            the generic type
	 * @return List of text part type Words
	 */
	<W extends IWord> List<W> getWords();

	/**
	 * Sets the reference to the next sentence, null if the sentence is last in a paragraph
	 * 
	 * @param next
	 *            the new next sentence
	 */
	void setNextSentence(ISentence next);

	/**
	 * Gets the next sentence.
	 * 
	 * @return the next sentence
	 */
	ISentence getNextSentence();
	
	/**
	 * Gets the word count.
	 * 
	 * @return the word count
	 */
	public int getWordCount();

    /**
     * Binds all words to this sentence
     *
     * @param words
     *            the words
      */
     public void addAllWords(final List<Word> words);

    /**
     * Sets sentence original text
     * @param text original text of the sentence
     */
    public void setText(final String text);
}
